﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using DevExpress.Skins;
using DevExpress.LookAndFeel;
using KNS.Invoice.UI;
using InvoiceManagement.Controllers;
using DAL;
using BLL;
using DAL.Linq;

namespace InvoiceManagement
{
    public partial class frmDMDonViTinh : KNSFormBase
    {
        #region "Khai báo biến"
        public string strAction = "";
        public int intMaDonViTinh;
        public frmDMDonViTinh()
        {
            InitializeComponent();
        }
        #endregion

        #region "Các hàm load dữ liệu"
        public void GetAll_DMDonViTinh()
        {
            try
            {
                IList<DMDONVITINH> lst = null;
                DM_DONVITINHController DMDonViTinh_Controller = new DM_DONVITINHController();
                lst = DMDonViTinh_Controller.GetAll_DMDonViTinh();
                grdData.DataSource = lst;
            }
            catch { }
        }
        #endregion

        #region "Các hàm sự kiện trên form"
        private void frmDMDonViTinh_Load(object sender, EventArgs e)
        {
            strAction = "Load";
            SetControls();
            GetAll_DMDonViTinh();
            grdData_Click(sender, e);
        }

        private void btnThemMoi_Click(object sender, EventArgs e)
        {
            strAction = "AddNew";
            SetControls();
            ClearText();
        }

        private void btnSua_Click(object sender, EventArgs e)
        {
            strAction = "Edit";
            SetControls();
            txtMaDonViTinh.Enabled = false;
            txtTenDonViTinh.Focus();
        }

        private void btnLuu_Click(object sender, EventArgs e)
        {
            try
            {
                bool bln = false;
                DM_DONVITINHController DMDonViTinh_Controller = new DM_DONVITINHController();
                if (CheckData())
                {
                    if (strAction == "AddNew")
                    {
                        bln = DMDonViTinh_Controller.DMDonViTinh_Insert(txtMaDonViTinh.Text, txtTenDonViTinh.Text, chkIsUse.Checked, clsCommon.uID);
                    }
                    else
                    {
                        if (strAction == "Edit")
                        {
                            bln = DMDonViTinh_Controller.DMDonViTinh_Update(intMaDonViTinh, txtTenDonViTinh.Text, chkIsUse.Checked, clsCommon.uID, clsCommon.uID, DateTime.Now);
                        }
                    }

                    if (bln == true)
                    {
                        KNSMessageBox.Show("Cập nhật thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        strAction = "Load";
                        SetControls();
                        GetAll_DMDonViTinh();
                        grdData_Click(sender, e);
                    }
                    else
                    {
                        KNSMessageBox.Show("Cập nhật thất bại", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }
            }
            catch { }
        }

        private void btnHuy_Click(object sender, EventArgs e)
        {
            strAction = "Load";
            SetControls();
            GetAll_DMDonViTinh();
            grdData_Click(sender, e);
        }

        private void btnDelete_Click(object sender, EventArgs e)
        {
            try
            {
                if (gridView1.RowCount > 0)
                {
                    if (KNSMessageBox.Show("Bạn có chắc muốn xoá?", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
                    {
                        bool bln = false;
                        DM_DONVITINHController DMDonViTinh_Controller = new DM_DONVITINHController();
                        bln = DMDonViTinh_Controller.DMDonViTinh_Delete(intMaDonViTinh);
                        if (bln == true)
                        {
                            KNSMessageBox.Show("Cập nhật thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            strAction = "Load";
                            SetControls();
                            GetAll_DMDonViTinh();
                            grdData_Click(sender, e);
                        }
                        else
                        {
                            KNSMessageBox.Show("Cập nhật thất bại", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        }
                    }
                }
                else
                {
                    KNSMessageBox.Show("Không có dữ liệu để xoá", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                }
            }
            catch { }
        }

        private void btnThoat_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void grdData_Click(object sender, EventArgs e)
        {
            if (gridView1.RowCount > 0)
            {
                int[] arrSelected = gridView1.GetSelectedRows();
                if (arrSelected != null && arrSelected.Length > 0)
                {
                    int selectedIndex = arrSelected[0];
                    if (selectedIndex >= 0)
                    {
                        Object a = gridView1.GetRow(selectedIndex);
                        if (a != null)
                        {
                            txtMaDonViTinh.Text = (a as DMDONVITINH).MaCode.ToString();
                            txtTenDonViTinh.Text = (a as DMDONVITINH).TenDonViTinh.ToString();

                            chkIsUse.Checked = (bool)(a as DMDONVITINH).IsUse;
                            intMaDonViTinh = (a as DMDONVITINH).MaDonViTinh;
                        }
                    }
                }                
            }
        }
        #endregion

        #region "Các hàm xử lý khác"
        public void SetControls()
        {
            if (strAction == "Load")
            {
                txtMaDonViTinh.Enabled = false;
                txtTenDonViTinh.Enabled = false;
                chkIsUse.Enabled = false;

                grdData.Enabled = true;

                btnThemMoi.Enabled = true;
                btnSua.Enabled = true;
                btnLuu.Enabled = false;
                btnHuy.Enabled = false;                
                btnDelete.Enabled = true;
                btnThoat.Enabled = true;
            }
            else
            {
                if (strAction == "AddNew" || strAction == "Edit")
                {
                    txtMaDonViTinh.Enabled = true;
                    txtTenDonViTinh.Enabled = true;
                    chkIsUse.Enabled = true;

                    grdData.Enabled = false;

                    btnThemMoi.Enabled = false;
                    btnSua.Enabled = false;
                    btnLuu.Enabled = true;
                    btnHuy.Enabled = true;
                    //btnTimKiem.Enabled = false;
                    btnDelete.Enabled = false;
                    btnThoat.Enabled = true;
                }
            }
        }

        public void ClearText()
        {
            txtMaDonViTinh.Text = "";
            txtTenDonViTinh.Text = "";            

            chkIsUse.Checked = false;
            txtMaDonViTinh.Focus();
        }

        public bool CheckData()
        {
            try
            {
                if (txtMaDonViTinh.Text == string.Empty || txtMaDonViTinh.Text == "")
                {
                    KNSMessageBox.Show("Chưa nhập mã đơn vị tính", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                    txtMaDonViTinh.Focus();
                    return false;
                }

                if (txtTenDonViTinh.Text == string.Empty || txtTenDonViTinh.Text == "")
                {
                    KNSMessageBox.Show("Chưa nhập tên đơn vị tính", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                    txtTenDonViTinh.Focus();
                    return false;
                }
                return true;
            }
            catch { return false; }
        }
        #endregion             

        
        
    }
}